// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})

// 每个页面都会导入该js 统一的设置写这里即可

const myToast = new bootstrap.Toast(document.querySelector("#myToast"), {
  delay: 2000,
});

//封装轻提示框
function tip(msg) {
  // 修改提示内容
  document.querySelector(".toast-body").innerHTML = msg;
  // 显示提示框
  myToast.show();
}

// axios基地址
axios.defaults.baseURL = 'http://ajax-api.itheima.net'

// 渲染用户名
const username = localStorage.getItem('username')
const span = document.querySelector('#navbar-main .font-weight-bold')
// 判断一下页面是不是需要渲染
// if (span) {
//   span.innerHTML = username
// }

// 逻辑中断，可代替if形成更简洁写法
span && (span.innerHTML = username)

// 用户退出功能
const logout = document.querySelector('#logout')

logout && logout.addEventListener('click', () =>{
  // 删除用户信息
  localStorage.removeItem('username')
  localStorage.removeItem('token')
  // 跳转到登录页面
  location.href = './login.html'
})

// 添加请求拦截器 直接copy即可，暂时不用自己配置 (axios发送请求就会执行)
axios.interceptors.request.use(function (config) {
  // 这是一个axios 的配置对象
  // console.log(config);
  // 在请求拦截其中统一注入 token
  config.headers.authorization = localStorage.getItem('token')
  // 在发送请求之前做些什么
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (res) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  // 1.数据剥离
  // console.log(res);
  // 在这里剥离了一层data，因此在其他的地方的data要减去一层
  return res.data;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  if (error.response.status === 401) {
    localStorage.removeItem('token');
    localStorage.removeItem('username')
    location.href = './login.html';
  }
  return Promise.reject(error);
});